package com.gedi.data.bigter.maperr;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * @Author:RenPu
 * @Date: 2020/1/2 18:21
 * @Version: 1.0
 * @description:
 */

/**
 *mapper阶段
 *       数据类型的对应关系
 *  java ------------------>hadoop
 * Long                     LongWritable
 *  Int                     IntWritable
 *  String                  Text
 *
 *
 *
 * keyIn: 数据类型：LongWritable 从首行开始字符作为统计的偏移量;例如：How are you (偏移量为11，注意一个tab或者空格算一个偏移量，换行不做为偏移量的统计)
 * valueIn: 数据类型：Text 代表一行数据的含义
 * keyOut: 数据类型：Text 包含一行数据的基本组成单位（一个单词）
 * valueOut：数据类型：IntWritable 初始值为 1；
 *
 *
 */
public class MapperDemo extends Mapper<LongWritable, Text,Text, IntWritable> {


    /**
     * 映射方法
     *
     * How are you ---->(How,1),(are,1),(you,1)
     * @param key
     * @param value
     * @param context mapreduce程序运行的上下文信息
     * @throws IOException
     * @throws InterruptedException
     */

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

        String line = value.toString();

        //切割的规律
        String [] words=line.toLowerCase().split(" ");
        for (String word:words) {
            //输出完成处理的kv数据，以字符串为单位
            context.write(new Text(word),new IntWritable(1));

        }
    }
}
